using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;
private void button1_Click(
object sender, EventArgs e)
{
Vector z =
new Vector(0);
Vector p =
new Vector(0);
Vector num =
new Vector(0);
Vector den =
new Vector(0);
Vector Response =
new Vector(0);
double k, Wc;
double FS = 2;
int Order = 4;
//design a fourth order filter.
IIRFilters.EllipticAnalog(Order,0.1,30, z, p,
out k);
//design analog protype
LinearSystems.Bilinear(z, p,
ref k, FS,
true);
double w1 = 0.2;
//start of the passband at 0.2Hz.
double w2 = 0.5;
//stop of the passband at 0.5Hz.
Wc = Math.Sqrt(w1*w2);
//center frequency of the passband
double BW = w2-w1;
//passband width
LinearSystems.LowpassToBandpassZ(z, p,
ref k, Wc, BW, LinearSystems.BilinearUnwarp(1,FS));
LinearSystems.ZeroPoleToTransferFun(num,den, z, p, k);
SignalUtils.FrequencyResponse(num, den, Response, 64,
false, TSignalWindowType.wtRectangular, 0);
//zero padding set to 64
//Alternative:
// ...
// LinearSystems.ZeroPoleToTransferFun(num,den, z, p, k);
// LinearSystems.LowpassToBandpassZ(num,den, Wc, BW, LinearSystems.BilinearUnwarp(1,FS));
MtxVecTee.DrawIt(Response, "Frequency response",
false);
//MtxVecTee.DrawIt(20 * MtxExpr.Log10(MtxExpr.Abs(Response)), "Magnitude", false);
//MtxVecTee.DrawIt(MtxExpr.PhaseSpectrum(Response) * (180 / Math.PI), "Phase", false);
}